package org.hxuhao.summer.context;

/**
 * bean创建后的处理器
 * 可以在bean初始化时，替换成其他类，比如增加代理逻辑。
 */
public interface BeanPostProcessor {

    /**
     * Invoked after new Bean().
     */
    default Object postProcessBeforeInitialization(Object bean, String beanName) {
        return bean;
    }

    /**
     * Invoked after bean.init() called.
     */
    default Object postProcessAfterInitialization(Object bean, String beanName) {
        return bean;
    }

    /**
     * Invoked before bean.setXyz() called.
     * 用于处理为当前bean注入依赖时，返回原始bean
     */
    default Object postProcessOnSetProperty(Object bean, String beanName) {
        return bean;
    }
}
